package protect.week06;

import java.util.HashMap;

/**
 * @author thinkpad - 83start
 * @version v1.0
 * @create 2022/10/6 8:56
 * @package protect.week06
 * @description 217. 存在重复元素
 * 给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ，返回 true ；
 * 如果数组中每个元素互不相同，返回 false 。
 *  
 *
 * 示例 1：
 *
 * 输入：nums = [1,2,3,1]
 * 输出：true
 * 示例 2：
 *
 * 输入：nums = [1,2,3,4]
 * 输出：false
 * 示例 3：
 *
 * 输入：nums = [1,1,1,3,3,4,3,2,4,2]
 * 输出：true
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode.cn/problems/contains-duplicate
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */

public class Ch04_ContainsDuplicate {
    public boolean containsDuplicate(int[] nums) {
        HashMap<Integer, Boolean> hashMap = new HashMap<>();

        for (int i = 0; i < nums.length; i++) {
            // 判断hashMap 中是否有这个元素
            // 如果没有，入hashMap 且 值为false
            if (!hashMap.containsKey(nums[i])) {
                hashMap.put(nums[i], false);
            } else {// 如果有，值改为 false
                hashMap.replace(nums[i], true);
            }
        }
        for (Integer key : hashMap.keySet()) {
            if (hashMap.get(key)) {
                return true;
            }
        }

        return false;
    }
}
